In the field of graphics rendering, objects in computer generated graphics are typically rendered to account only for the interaction of light at the surface of the object. For most opaque objects, this can be performed with little to no perceivable loss of realism. In contrast, rendering of objects that exhibit sub-surface scattering properties can be particularly complicated to perform realistically. These objects typically include those consisting of materials—such as skin, wax, ice, marble, jade, etc.—that naturally allow some light penetration at the surface of the material. Some of the penetrating light is absorbed, while the remaining portion subsequently scatters (diffuses) and brightens the immediately surrounding sub-surface area.
Realistically modeling these sub-surface scattering properties is difficult because of these particular effects. Often, the effect is approximated by mapping the surface of three-dimensional object (typically as a triangle mesh) into a flat two-dimensional representation, and rendering the lighting into a texture, stored as a texture map. The texture is then blurred or otherwise convolved to approximate the sub-surface scattering effect. However, it is often difficult or even impossible to create a flat representation of a three-dimensional model that will map completely as a single contiguous two dimensional region without artificial seams. Thus, what would appear in a three-dimensional model as contiguous or adjacent regions may be separated when the three-dimensional mesh is unwrapped into a two-dimensional representation. Blurring is a common technique used in rendering sub-surface scattering effects. When blurring or other sub-surface scattering effects are performed, the region that is sampled may spatially include portions that lie in non-contiguous region in the two-dimensional representation. This causes undesirable artifacts in the rendered two dimensional image such as unexpected and/or undesirable lines or incongruous lighting along the surface of objects.
Various approaches have been developed to address the issue. The simplest approach is to avoid the issue entirely by specifically authoring the art assets (objects) to hide the seams. This is particularly common when rendering clothing, for example, where additional layers or accessories can be superimposed over the lines, after the rendering process. However, super-imposing additional layers would require additional time and labor, even in some instances may not be possible, or desirable. Another approach is to use smaller sampling windows of the sub-scattering effect that make the defects less obvious. Unfortunately, while the effect may be mitigated by using smaller sampling windows, the problem cannot be completely eliminated by using smaller sampling windows, and the blurring effect is less realistically rendered when sampling windows become extremely small.
Yet another proposed solution is to apply the sub-surface scattering effects to an already rendered two dimensional image. However, while an object may be three-dimensional, two dimensional image are still rendered in two-dimensions for a given perspective. Thus, portions of the three-dimensional object (e.g., the back and portions of the side) of an object will not appear in an two dimensional image rendered from a perspective at the front of the object. This results in a lower quality of visual effect, as data corresponding to portions of the object that are not visible in the two dimensional image is lost, and cannot be used to contribute to application of the sub-surface scattering effect. Accordingly, the proposed conventional approaches to realistically rendering sub-surface scattering effects in a three-dimensional object are at best imperfect solutions, and each suffers from specific and significant flaws.